package com.example.demo;

import javafx.application.Application;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class BasicApp extends Application {
    /**
     * 初始化并启动应用程序窗口。
     *
     * @param stage 主窗口的Stage对象，用于设置应用程序的主窗口属性和显示窗口。
     * @throws Exception 如果在设置场景或显示窗口过程中发生错误，则抛出异常。
     */
    @Override
    public void start(Stage stage) throws Exception {
        // 设置主窗口的场景
        stage.setScene(new Scene(createPlayerInfo()));
        // 显示主窗口
        stage.show();
    }
    /**
     * 创建界面内容的方法。
     * 该方法不接受任何参数。
     * @return Parent 返回一个VBox容器，其中包含一个文本输入框、一个按钮和一个文本显示区域。
     */
    private Parent createContent() {
        // 创建一个文本输入框
        TextField input = new TextField();
        // 创建一个用于显示输出的文本区域
        Text output = new Text();
        // 创建一个按钮，点击后将输入框中的文本显示到输出文本区域中
        Button button = new Button("Press");
        button.setOnAction(e -> {
            // 设置输出文本为输入框中的文本
            output.setText(input.getText());
        });
        // 将输入框、按钮和输出文本区域放入一个VBox容器中
        VBox root = new VBox(input, button, output);
        // 设置容器的首选大小
        root.setPrefSize(600, 600);
        return root;
    }
    private Parent createPlayerInfo() {
        Player p1 = new Player("李逍遥", 18, 100, 100, 10);
        // 创建一个用于显示输出的文本区域
        Text txt_playerName = new Text();
        //为文本区域赋值
        txt_playerName.setText(p1.getName());
        Text txt_playerAge = new Text();
        txt_playerAge.setText(String.valueOf(p1.getAge()));
        Text txt_playerHp = new Text();
        txt_playerHp.setText(String.valueOf(p1.getHp()));
        Text txt_playerMaxHp = new Text();
        txt_playerMaxHp.setText(String.valueOf(p1.getMaxHp()));
        Text txt_playerAp = new Text();
        txt_playerAp.setText(String.valueOf(p1.getAp()));
        //添加头像组件
        ImageView playerAvatar = setPlayerAvatar();
        // 将输入框、按钮和输出文本区域放入一个VBox容器中
        HBox root = new HBox(playerAvatar,txt_playerName, txt_playerAge, txt_playerHp, txt_playerMaxHp, txt_playerAp);
        root.setSpacing(10);
        // 设置容器的首选大小
        root.setPrefSize(600, 600);
        return root;
    }
    // 设置玩家头像，返回图片控件
    private ImageView setPlayerAvatar(){
        // 创建一个用于显示头像的ImageView组件
        ImageView playerAvatar = new ImageView();

        // 假设您已经将玩家头像图片加载到一个Image对象中，例如：
        Image playerImage = new Image(BasicApp.class.getResourceAsStream("/lxy.jpeg"));
        // 将加载的图片设置到ImageView中
        playerAvatar.setImage(playerImage);

        // 设置头像的大小和其他样式属性（根据实际需要调整）
        playerAvatar.setFitWidth(200);
        playerAvatar.setFitHeight(200);
        // 设置玩家头像保持比例
        playerAvatar.setPreserveRatio(true);

        // 返回图片控件
        return playerAvatar;
    }

    /**
     * 程序的主入口函数。
     *
     * @param args 命令行传入的参数数组。
     *              该参数在本示例中直接传递给了launch方法，没有进行处理或解析。
     * @see #launch(String...)
     *
     */
    public static void main(String[] args) {
        launch(args); // 启动程序，将命令行参数传递给launch方法
    }
}
